package com.lavender.extention._failure_analyzer;

import org.springframework.boot.diagnostics.AbstractFailureAnalyzer;
import org.springframework.boot.diagnostics.FailureAnalysis;

/**
 * <p>
 * 自定义FailureAnalyzer
 * 泛型里的异常根据实际Spring抛错的异常来定。
 * 自定义 FailureAnalyzer 对于监控应用启动过程十分有用。
 * 注意：自定义 FailureAnalyzer 处理不了应用启动 main 方法中的异常
 *
 * 使用方式：spring.factories里加入：
 * org.springframework.boot.diagnostics.FailureAnalyzer=\
 * com.lavender.extention._failure_analyzer.IllegalArgumentFailureAnalyzer
 *
 * 使用场景：
 * 1：FailureAnalyzer适用于监控SpringBoot程序的启动异常。
 * 2：SpringBoot自定义异常处理器适用于统一应用运行期业务异常。
 *
 * </p>
 *
 * @author: zhu.chen
 * @date: 2021/3/24
 * @version: v1.0.0
 */
public class IllegalArgumentFailureAnalyzer extends AbstractFailureAnalyzer<IllegalArgumentException> {

    @Override
    protected FailureAnalysis analyze(Throwable rootFailure, IllegalArgumentException cause) {
        return new FailureAnalysis(cause.getMessage(), "Please check startup argument!", cause);
    }

}
